-- 参数
-- 1.优惠卷id：voucher_id
local voucher_id = ARGV[1]
-- 2.用户id：user_id
local user_id = ARGV[2]
-- 3.订单id：order_id
local order_id = ARGV[3]

-- redis中优惠卷库存的key
local voucher_stock_key = "seckill:stock:" .. voucher_id
--redis中订单的key
local order_key = "seckill:order:" .. voucher_id

-- 根据判断优惠卷判断库存是否充足
if(tonumber(redis.call("get",voucher_stock_key)) <=0 ) then
    -- 库存不足,返回 1
    return 1
end
-- 库存充足
-- 判断该用户是否购买过
if(redis.call("sismember",order_key,user_id) == 1) then
    -- 购买过,返回2
    return 2
end
-- 没购买过
-- 库存减1
redis.call("incrby",voucher_stock_key,-1)
-- 把购买的用户id存入订单
redis.call("sadd",order_key,user_id)
-- 将信息发送到消息队列中 xadd stream.orders * k1 v1 k2 v2...
-- *:代表消息id由系统自动生成
redis.call("xadd","stream.orders","*","userId",user_id,"voucherId",voucher_id,"id",order_id)
return 0